import PageInfo from './PageInfo';

/**
 * 通用分页助手
 */
export default class PageHelper {
  static create = () => {
    const pageInfo = new PageInfo();
    return pageInfo;
  }

  /**
   * 可以通过设置这个函数，格式化发送到后端的参数
   *
   * 例如后端分页接口需要的参数是
   * {
   *    currentPage: 1,
   *    showCount: 10,
   *    paramMap: {name: 'jonn'}
   * }
   * 可以通过设置这个参数格式化分页信息
   * 例如：
   * pageHelper.requestFormat(({pageNum, pageSize}) => ({
   *  currentPage: pageNum,
   *  showCount: pageSize
   * }))
   */
  static requestFormat(pageInfo) {
    return {};
  };


  /**
   * 格式化从服务端反回的数据，并置入PageInfo对象中，
   * 为下次分页做准备
   * 页码 pageNum;
   每页数量 pageSize;
   当前页的数量 size;
   总记录数 total;
   总页数 totalPages;
   结果集 list;
   * @param {object} resp
   */
  static responseFormat(resp) {
    return {};
  }

  static changePage(result) {
    return {
      total: result.total,      // 总记录数
      pageNum: result.current,  // 当前页的数量
      pageSize: result.size,    // 每页数量
      size: !!result.records ? result.records.length : 0,
      totalPages: result.pages, // 总页数
      list: result.records,
    }
  }
  //无分页
  static noPage(result,pageSize) {
    return {
      total: result.length,
      size: pageSize,    // 每页数量
      records: result,
    }
  }

  static wrapPage(result, total, pageNum, pageSize, size, totalPages) {

    const len = !!result ? result.length : 0;
    return {
      total: len,      // 总记录数
      pageNum: 1,  // 当前页的数量
      pageSize: len,    // 每页数量
      size: len,
      totalPages: 1, // 总页数
      list: result,
    }
  }

  static changePageParam(param) {
    return {
      ...param,
      current: param.pageNum,
      size: param.pageSize,
    }
  }
}
